(0) Obligation:

JBC Problem based on JBC Program:
No human-readable program information known.

Manifest-Version: 1.0 Created-By: 1.6.0_16 (Sun Microsystems Inc.) Main-Class: PastaC9

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 294 nodes with 1 SCC.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → Load972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Load972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Cond_Load972ARR1(i176 >= 42 && i94 > 0 && i94 < i3 && i99 > 0 && i98 > 0 && i94 + 1 > 0, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Load972(java.lang.Object(ARRAY(i3, a933data)), i94 + 1, i98, i99 + -1)
Load972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → Load972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Load972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Cond_Load972ARR2(i94 + 1 > 0 && i94 + 1 < i3 && i176 >= 0 && i176 < 42 && i94 > 0 && i94 < i3 && i99 > 0 && i98 > 0 && i94 + 1 + 1 > 0, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Load972(java.lang.Object(ARRAY(i3, a933data)), i94 + 1 + 1, i98 + -1, i450)
The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(5) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(6) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
Load972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → Load972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Load972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Cond_Load972ARR1(i176 >= 42 && i94 > 0 && i94 < i3 && i99 > 0 && i98 > 0 && i94 + 1 > 0, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Load972(java.lang.Object(ARRAY(i3, a933data)), i94 + 1, i98, i99 + -1)
Load972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → Load972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Load972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Cond_Load972ARR2(i94 + 1 > 0 && i94 + 1 < i3 && i176 >= 0 && i176 < 42 && i94 > 0 && i94 < i3 && i99 > 0 && i98 > 0 && i94 + 1 + 1 > 0, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → Load972(java.lang.Object(ARRAY(i3, a933data)), i94 + 1 + 1, i98 + -1, i450)

The integer pair graph contains the following rules and edges:
(0): LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))
(1): LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0, java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
(2): COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2] + 1, i98[2], i99[2] + -1)
(3): LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))
(4): LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0, java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))
(5): COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5] + 1 + 1, i98[5] + -1, i450[5])

(0) -> (1), if ((java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])) →* java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))∧(i98[0]* i98[1])∧(i99[0]* i99[1])∧(i94[0]* i94[1])∧(java.lang.Object(ARRAY(i3[0], a933data[0])) →* java.lang.Object(ARRAY(i3[1], a933data[1]))))


(1) -> (2), if ((i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i3[1], a933data[1])) →* java.lang.Object(ARRAY(i3[2], a933data[2])))∧(java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])) →* java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2])))∧(i99[1]* i99[2])∧(i98[1]* i98[2])∧(i94[1]* i94[2]))


(2) -> (0), if ((i98[2]* i98[0])∧(i99[2] + -1* i99[0])∧(java.lang.Object(ARRAY(i3[2], a933data[2])) →* java.lang.Object(ARRAY(i3[0], a933data[0])))∧(i94[2] + 1* i94[0]))


(2) -> (3), if ((i94[2] + 1* i94[3])∧(i99[2] + -1* i99[3])∧(java.lang.Object(ARRAY(i3[2], a933data[2])) →* java.lang.Object(ARRAY(i3[3], a933data[3])))∧(i98[2]* i98[3]))


(3) -> (4), if ((java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])) →* java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))∧(i99[3]* i99[4])∧(java.lang.Object(ARRAY(i3[3], a933data[3])) →* java.lang.Object(ARRAY(i3[4], a933data[4])))∧(i98[3]* i98[4])∧(i94[3]* i94[4])∧(java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])) →* java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4]))))


(4) -> (5), if ((i99[4]* i99[5])∧(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i3[4], a933data[4])) →* java.lang.Object(ARRAY(i3[5], a933data[5])))∧(java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])) →* java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5])))∧(i94[4]* i94[5])∧(i98[4]* i98[5])∧(java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])) →* java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5]))))


(5) -> (0), if ((i94[5] + 1 + 1* i94[0])∧(i450[5]* i99[0])∧(i98[5] + -1* i98[0])∧(java.lang.Object(ARRAY(i3[5], a933data[5])) →* java.lang.Object(ARRAY(i3[0], a933data[0]))))


(5) -> (3), if ((i94[5] + 1 + 1* i94[3])∧(i98[5] + -1* i98[3])∧(java.lang.Object(ARRAY(i3[5], a933data[5])) →* java.lang.Object(ARRAY(i3[3], a933data[3])))∧(i450[5]* i99[3]))



The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(7) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(8) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))
(1): LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0, java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
(2): COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2] + 1, i98[2], i99[2] + -1)
(3): LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))
(4): LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0, java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))
(5): COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5] + 1 + 1, i98[5] + -1, i450[5])

(0) -> (1), if ((java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])) →* java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))∧(i98[0]* i98[1])∧(i99[0]* i99[1])∧(i94[0]* i94[1])∧(java.lang.Object(ARRAY(i3[0], a933data[0])) →* java.lang.Object(ARRAY(i3[1], a933data[1]))))


(1) -> (2), if ((i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i3[1], a933data[1])) →* java.lang.Object(ARRAY(i3[2], a933data[2])))∧(java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])) →* java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2])))∧(i99[1]* i99[2])∧(i98[1]* i98[2])∧(i94[1]* i94[2]))


(2) -> (0), if ((i98[2]* i98[0])∧(i99[2] + -1* i99[0])∧(java.lang.Object(ARRAY(i3[2], a933data[2])) →* java.lang.Object(ARRAY(i3[0], a933data[0])))∧(i94[2] + 1* i94[0]))


(2) -> (3), if ((i94[2] + 1* i94[3])∧(i99[2] + -1* i99[3])∧(java.lang.Object(ARRAY(i3[2], a933data[2])) →* java.lang.Object(ARRAY(i3[3], a933data[3])))∧(i98[2]* i98[3]))


(3) -> (4), if ((java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])) →* java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))∧(i99[3]* i99[4])∧(java.lang.Object(ARRAY(i3[3], a933data[3])) →* java.lang.Object(ARRAY(i3[4], a933data[4])))∧(i98[3]* i98[4])∧(i94[3]* i94[4])∧(java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])) →* java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4]))))


(4) -> (5), if ((i99[4]* i99[5])∧(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i3[4], a933data[4])) →* java.lang.Object(ARRAY(i3[5], a933data[5])))∧(java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])) →* java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5])))∧(i94[4]* i94[5])∧(i98[4]* i98[5])∧(java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])) →* java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5]))))


(5) -> (0), if ((i94[5] + 1 + 1* i94[0])∧(i450[5]* i99[0])∧(i98[5] + -1* i98[0])∧(java.lang.Object(ARRAY(i3[5], a933data[5])) →* java.lang.Object(ARRAY(i3[0], a933data[0]))))


(5) -> (3), if ((i94[5] + 1 + 1* i94[3])∧(i98[5] + -1* i98[3])∧(java.lang.Object(ARRAY(i3[5], a933data[5])) →* java.lang.Object(ARRAY(i3[3], a933data[3])))∧(i450[5]* i99[3]))



The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(9) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

(10) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))
(1): LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0, java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
(2): COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2] + 1, i98[2], i99[2] + -1)
(3): LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))
(4): LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0, java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))
(5): COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5] + 1 + 1, i98[5] + -1, i450[5])

(0) -> (1), if (((i176[0]* i176[1])∧(i175[0]* i175[1])∧(i177[0]* i177[1])∧(a1221[0]* a1221[1]))∧(i98[0]* i98[1])∧(i99[0]* i99[1])∧(i94[0]* i94[1])∧((i3[0]* i3[1])∧(a933data[0]* a933data[1])))


(1) -> (2), if ((i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0* TRUE)∧((i3[1]* i3[2])∧(a933data[1]* a933data[2]))∧((i176[1]* i176[2])∧(i175[1]* i175[2])∧(i177[1]* i177[2])∧(a1221[1]* a1221[2]))∧(i99[1]* i99[2])∧(i98[1]* i98[2])∧(i94[1]* i94[2]))


(2) -> (0), if ((i98[2]* i98[0])∧(i99[2] + -1* i99[0])∧((i3[2]* i3[0])∧(a933data[2]* a933data[0]))∧(i94[2] + 1* i94[0]))


(2) -> (3), if ((i94[2] + 1* i94[3])∧(i99[2] + -1* i99[3])∧((i3[2]* i3[3])∧(a933data[2]* a933data[3]))∧(i98[2]* i98[3]))


(3) -> (4), if (((i176[3]* i176[4])∧(i175[3]* i175[4])∧(i177[3]* i177[4])∧(a1221[3]* a1221[4]))∧(i99[3]* i99[4])∧((i3[3]* i3[4])∧(a933data[3]* a933data[4]))∧(i98[3]* i98[4])∧(i94[3]* i94[4])∧((i450[3]* i450[4])∧(i449[3]* i449[4])∧(i451[3]* i451[4])∧(a2108[3]* a2108[4])))


(4) -> (5), if ((i99[4]* i99[5])∧(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0* TRUE)∧((i3[4]* i3[5])∧(a933data[4]* a933data[5]))∧((i176[4]* i176[5])∧(i175[4]* i175[5])∧(i177[4]* i177[5])∧(a1221[4]* a1221[5]))∧(i94[4]* i94[5])∧(i98[4]* i98[5])∧((i450[4]* i450[5])∧(i449[4]* i449[5])∧(i451[4]* i451[5])∧(a2108[4]* a2108[5])))


(5) -> (0), if ((i94[5] + 1 + 1* i94[0])∧(i450[5]* i99[0])∧(i98[5] + -1* i98[0])∧((i3[5]* i3[0])∧(a933data[5]* a933data[0])))


(5) -> (3), if ((i94[5] + 1 + 1* i94[3])∧(i98[5] + -1* i98[3])∧((i3[5]* i3[3])∧(a933data[5]* a933data[3]))∧(i450[5]* i99[3]))



The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(11) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → LOAD972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) the following chains were created:
  • We consider the chain LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0]))) which results in the following constraint:

    (1)    (LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0])≥NonInfC∧LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0])≥LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))∧(UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥)∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥)∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥)∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)







For Pair LOAD972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176, 42), >(i94, 0)), <(i94, i3)), >(i99, 0)), >(i98, 0)), >(+(i94, 1), 0)), java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) the following chains were created:
  • We consider the chain LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))), COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1)) which results in the following constraint:

    (6)    (&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0))=TRUEi3[1]=i3[2]a933data[1]=a933data[2]i176[1]=i176[2]i175[1]=i175[2]i177[1]=i177[2]a1221[1]=a1221[2]i99[1]=i99[2]i98[1]=i98[2]i94[1]=i94[2]LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))≥NonInfC∧LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))≥COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))∧(UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥))



    We simplified constraint (6) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(+(i94[1], 1), 0)=TRUE>(i98[1], 0)=TRUE>(i99[1], 0)=TRUE<(i94[1], i3[1])=TRUE>=(i176[1], 42)=TRUE>(i94[1], 0)=TRUELOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))≥NonInfC∧LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))≥COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))∧(UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (i94[1] ≥ 0∧i98[1] + [-1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-1] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (i94[1] ≥ 0∧i98[1] + [-1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-1] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (i94[1] ≥ 0∧i98[1] + [-1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-1] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (i94[1] ≥ 0∧i98[1] + [-1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-1] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    ([1] + i94[1] ≥ 0∧i98[1] + [-1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-2] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (12) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (13)    ([1] + i94[1] ≥ 0∧i98[1] ≥ 0∧i99[1] + [-1] ≥ 0∧i3[1] + [-2] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    ([1] + i94[1] ≥ 0∧i98[1] ≥ 0∧i99[1] ≥ 0∧i3[1] + [-2] + [-1]i94[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]i94[1] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (14) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (15)    ([1] + i94[1] ≥ 0∧i98[1] ≥ 0∧i99[1] ≥ 0∧i3[1] ≥ 0∧i176[1] + [-42] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28 + (2)bni_28] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    ([1] + i94[1] ≥ 0∧i98[1] ≥ 0∧i99[1] ≥ 0∧i3[1] ≥ 0∧i176[1] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28 + (2)bni_28] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → LOAD972(java.lang.Object(ARRAY(i3, a933data)), +(i94, 1), i98, +(i99, -1)) the following chains were created:
  • We consider the chain COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1)) which results in the following constraint:

    (17)    (COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2])))≥NonInfC∧COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2])))≥LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))∧(UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥))



    We simplified constraint (17) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (18)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (18) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (19)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (20)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (20) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (21)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair LOAD972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → LOAD972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) the following chains were created:
  • We consider the chain LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3]))) which results in the following constraint:

    (22)    (LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3])≥NonInfC∧LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3])≥LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))∧(UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥))



    We simplified constraint (22) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (23)    ((UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥)∧[2 + (-1)bso_33] ≥ 0)



    We simplified constraint (23) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (24)    ((UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥)∧[2 + (-1)bso_33] ≥ 0)



    We simplified constraint (24) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (25)    ((UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥)∧[2 + (-1)bso_33] ≥ 0)



    We simplified constraint (25) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (26)    ((UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[2 + (-1)bso_33] ≥ 0)







For Pair LOAD972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94, 1), 0), <(+(i94, 1), i3)), >=(i176, 0)), <(i176, 42)), >(i94, 0)), <(i94, i3)), >(i99, 0)), >(i98, 0)), >(+(+(i94, 1), 1), 0)), java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) the following chains were created:
  • We consider the chain LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))), COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5]) which results in the following constraint:

    (27)    (i99[4]=i99[5]&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0))=TRUEi3[4]=i3[5]a933data[4]=a933data[5]i176[4]=i176[5]i175[4]=i175[5]i177[4]=i177[5]a1221[4]=a1221[5]i94[4]=i94[5]i98[4]=i98[5]i450[4]=i450[5]i449[4]=i449[5]i451[4]=i451[5]a2108[4]=a2108[5]LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))≥NonInfC∧LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))≥COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))∧(UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥))



    We simplified constraint (27) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (28)    (>(+(+(i94[4], 1), 1), 0)=TRUE>(i98[4], 0)=TRUE>(i99[4], 0)=TRUE<(i94[4], i3[4])=TRUE>(i94[4], 0)=TRUE<(i176[4], 42)=TRUE>=(i176[4], 0)=TRUE>(+(i94[4], 1), 0)=TRUE<(+(i94[4], 1), i3[4])=TRUELOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))≥NonInfC∧LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))≥COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))∧(UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥))



    We simplified constraint (28) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (29)    (i94[4] + [1] ≥ 0∧i98[4] + [-1] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-1] + [-1]i94[4] ≥ 0∧i94[4] + [-1] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧i94[4] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (29) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (30)    (i94[4] + [1] ≥ 0∧i98[4] + [-1] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-1] + [-1]i94[4] ≥ 0∧i94[4] + [-1] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧i94[4] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (30) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (31)    (i94[4] + [1] ≥ 0∧i98[4] + [-1] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-1] + [-1]i94[4] ≥ 0∧i94[4] + [-1] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧i94[4] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (31) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (32)    (i94[4] + [1] ≥ 0∧i98[4] + [-1] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-1] + [-1]i94[4] ≥ 0∧i94[4] + [-1] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧i94[4] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (32) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (33)    ([2] + i94[4] ≥ 0∧i98[4] + [-1] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧i3[4] + [-3] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + (-1)bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (33) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (34)    ([2] + i94[4] ≥ 0∧i98[4] ≥ 0∧i99[4] + [-1] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧i3[4] + [-3] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + (-1)bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    ([2] + i94[4] ≥ 0∧i98[4] ≥ 0∧i99[4] ≥ 0∧i3[4] + [-2] + [-1]i94[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧i3[4] + [-3] + [-1]i94[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + (-1)bni_34] + [(-1)bni_34]i94[4] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (35) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (36)    ([2] + i94[4] ≥ 0∧i98[4] ≥ 0∧i99[4] ≥ 0∧i3[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧[-1] + i3[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + bni_34] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (36) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (37)    ([2] + i94[4] ≥ 0∧i98[4] ≥ 0∧i99[4] ≥ 0∧[1] + i3[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧i3[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + (2)bni_34] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → LOAD972(java.lang.Object(ARRAY(i3, a933data)), +(+(i94, 1), 1), +(i98, -1), i450) the following chains were created:
  • We consider the chain COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5]) which results in the following constraint:

    (38)    (COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5])))≥NonInfC∧COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5])))≥LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])∧(UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → LOAD972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
    • ((UIncreasing(LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)

  • LOAD972ARR1(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176, 42), >(i94, 0)), <(i94, i3)), >(i99, 0)), >(i98, 0)), >(+(i94, 1), 0)), java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
    • ([1] + i94[1] ≥ 0∧i98[1] ≥ 0∧i99[1] ≥ 0∧i3[1] ≥ 0∧i176[1] ≥ 0∧i94[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_28 + (2)bni_28] + [bni_28]i3[1] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → LOAD972(java.lang.Object(ARRAY(i3, a933data)), +(i94, 1), i98, +(i99, -1))
    • ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • LOAD972(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99) → LOAD972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
    • ((UIncreasing(LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[2 + (-1)bso_33] ≥ 0)

  • LOAD972ARR2(java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94, 1), 0), <(+(i94, 1), i3)), >=(i176, 0)), <(i176, 42)), >(i94, 0)), <(i94, i3)), >(i99, 0)), >(i98, 0)), >(+(+(i94, 1), 1), 0)), java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221)))
    • ([2] + i94[4] ≥ 0∧i98[4] ≥ 0∧i99[4] ≥ 0∧[1] + i3[4] ≥ 0∧i94[4] ≥ 0∧[41] + [-1]i176[4] ≥ 0∧i176[4] ≥ 0∧[1] + i94[4] ≥ 0∧i3[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_34 + (2)bni_34] + [bni_34]i3[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3, a933data)), i94, i98, i99, java.lang.Object(java.lang.String(i450, i449, i451, a2108)), java.lang.Object(java.lang.String(i176, i175, i177, a1221))) → LOAD972(java.lang.Object(ARRAY(i3, a933data)), +(+(i94, 1), 1), +(i98, -1), i450)
    • ((UIncreasing(LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD972(x1, x2, x3, x4)) = [2] + [-1]x2 + [-1]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1]x1   
POL(LOAD972ARR1(x1, x2, x3, x4, x5)) = [2] + x5 + [-1]x2 + [-1]x1   
POL(java.lang.String(x1, x2, x3, x4)) = [-1]   
POL(COND_LOAD972ARR1(x1, x2, x3, x4, x5, x6)) = [2] + x6 + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(42) = [42]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(-1) = [-1]   
POL(LOAD972ARR2(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x2 + [-1]x1   
POL(COND_LOAD972ARR2(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x7 + [-1]x3 + [-1]x2   

The following pairs are in P>:

LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))
LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))

The following pairs are in Pbound:

LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))

The following pairs are in P:

LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(&&(&&(&&(&&(&&(>=(i176[1], 42), >(i94[1], 0)), <(i94[1], i3[1])), >(i99[1], 0)), >(i98[1], 0)), >(+(i94[1], 1), 0)), java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), +(i94[2], 1), i98[2], +(i99[2], -1))
LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i94[4], 1), 0), <(+(i94[4], 1), i3[4])), >=(i176[4], 0)), <(i176[4], 42)), >(i94[4], 0)), <(i94[4], i3[4])), >(i99[4], 0)), >(i98[4], 0)), >(+(+(i94[4], 1), 1), 0)), java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))
COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), +(+(i94[5], 1), 1), +(i98[5], -1), i450[5])

There are no usable rules.

(12) Complex Obligation (AND)

(13) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): LOAD972ARR1(java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1]))) → COND_LOAD972ARR1(i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0, java.lang.Object(ARRAY(i3[1], a933data[1])), i94[1], i98[1], i99[1], java.lang.Object(java.lang.String(i176[1], i175[1], i177[1], a1221[1])))
(2): COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2] + 1, i98[2], i99[2] + -1)
(4): LOAD972ARR2(java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4]))) → COND_LOAD972ARR2(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0, java.lang.Object(ARRAY(i3[4], a933data[4])), i94[4], i98[4], i99[4], java.lang.Object(java.lang.String(i450[4], i449[4], i451[4], a2108[4])), java.lang.Object(java.lang.String(i176[4], i175[4], i177[4], a1221[4])))
(5): COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5] + 1 + 1, i98[5] + -1, i450[5])

(1) -> (2), if ((i176[1] >= 42 && i94[1] > 0 && i94[1] < i3[1] && i99[1] > 0 && i98[1] > 0 && i94[1] + 1 > 0* TRUE)∧((i3[1]* i3[2])∧(a933data[1]* a933data[2]))∧((i176[1]* i176[2])∧(i175[1]* i175[2])∧(i177[1]* i177[2])∧(a1221[1]* a1221[2]))∧(i99[1]* i99[2])∧(i98[1]* i98[2])∧(i94[1]* i94[2]))


(4) -> (5), if ((i99[4]* i99[5])∧(i94[4] + 1 > 0 && i94[4] + 1 < i3[4] && i176[4] >= 0 && i176[4] < 42 && i94[4] > 0 && i94[4] < i3[4] && i99[4] > 0 && i98[4] > 0 && i94[4] + 1 + 1 > 0* TRUE)∧((i3[4]* i3[5])∧(a933data[4]* a933data[5]))∧((i176[4]* i176[5])∧(i175[4]* i175[5])∧(i177[4]* i177[5])∧(a1221[4]* a1221[5]))∧(i94[4]* i94[5])∧(i98[4]* i98[5])∧((i450[4]* i450[5])∧(i449[4]* i449[5])∧(i451[4]* i451[5])∧(a2108[4]* a2108[5])))



The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(14) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes.

(15) TRUE

(16) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD972(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0]) → LOAD972ARR1(java.lang.Object(ARRAY(i3[0], a933data[0])), i94[0], i98[0], i99[0], java.lang.Object(java.lang.String(i176[0], i175[0], i177[0], a1221[0])))
(2): COND_LOAD972ARR1(TRUE, java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2], i98[2], i99[2], java.lang.Object(java.lang.String(i176[2], i175[2], i177[2], a1221[2]))) → LOAD972(java.lang.Object(ARRAY(i3[2], a933data[2])), i94[2] + 1, i98[2], i99[2] + -1)
(3): LOAD972(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3]) → LOAD972ARR2(java.lang.Object(ARRAY(i3[3], a933data[3])), i94[3], i98[3], i99[3], java.lang.Object(java.lang.String(i450[3], i449[3], i451[3], a2108[3])), java.lang.Object(java.lang.String(i176[3], i175[3], i177[3], a1221[3])))
(5): COND_LOAD972ARR2(TRUE, java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5], i98[5], i99[5], java.lang.Object(java.lang.String(i450[5], i449[5], i451[5], a2108[5])), java.lang.Object(java.lang.String(i176[5], i175[5], i177[5], a1221[5]))) → LOAD972(java.lang.Object(ARRAY(i3[5], a933data[5])), i94[5] + 1 + 1, i98[5] + -1, i450[5])

(2) -> (0), if ((i98[2]* i98[0])∧(i99[2] + -1* i99[0])∧((i3[2]* i3[0])∧(a933data[2]* a933data[0]))∧(i94[2] + 1* i94[0]))


(5) -> (0), if ((i94[5] + 1 + 1* i94[0])∧(i450[5]* i99[0])∧(i98[5] + -1* i98[0])∧((i3[5]* i3[0])∧(a933data[5]* a933data[0])))


(2) -> (3), if ((i94[2] + 1* i94[3])∧(i99[2] + -1* i99[3])∧((i3[2]* i3[3])∧(a933data[2]* a933data[3]))∧(i98[2]* i98[3]))


(5) -> (3), if ((i94[5] + 1 + 1* i94[3])∧(i98[5] + -1* i98[3])∧((i3[5]* i3[3])∧(a933data[5]* a933data[3]))∧(i450[5]* i99[3]))



The set Q consists of the following terms:
Load972(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4)
Load972ARR1(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Cond_Load972ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)))
Load972ARR2(java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))
Cond_Load972ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, java.lang.Object(java.lang.String(x5, x6, x7, x8)), java.lang.Object(java.lang.String(x9, x10, x11, x12)))

(17) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes.

(18) TRUE